﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace V82.ОбщиеМодули
{
	public partial class ОбщегоНазначенияЗК
	{
		///////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ - ОБРАБОТЧИКИ ЗАПОЛНЕНИЯ ГЛОБАЛЬНЫХ ПЕРЕМЕННЫХ

		public object ДанныеУчетнойПолитикиПоПерсоналуОрганизации(/*Организация = Неопределено*/)
		{
			//Запрос = Новый Запрос;
			//Запрос.УстановитьПараметр("Ссылка", Организация);
			//Запрос.УстановитьПараметр("НеОтбирать", Не ЗначениеЗаполнено(Организация));
			/*Запрос.Текст =
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	Организации.Ссылка КАК Организация,
	|	ЕСТЬNULL(УчетнаяПолитикаПоПерсоналуОрганизаций.ЕдиныйНумераторКадровыхДокументов, ЛОЖЬ) КАК ЕдиныйНумераторКадровыхДокументов,
	|	ЕСТЬNULL(УчетнаяПолитикаПоПерсоналуОрганизаций.КонтрольКоличестваСтавокШтатногоРасписания, ЛОЖЬ) КАК КонтрольКоличестваСтавокШтатногоРасписания,
	|	ЕСТЬNULL(УчетнаяПолитикаПоПерсоналуОрганизаций.КонтрольРазмераСтавокШтатногоРасписания, ЛОЖЬ) КАК КонтрольРазмераСтавокШтатногоРасписания,
	|	ЕСТЬNULL(УчетнаяПолитикаПоПерсоналуОрганизаций.ПоказыватьТабельныеНомераВДокументах, ЛОЖЬ) КАК ПоказыватьТабельныеНомераВДокументах,
	|	ЕСТЬNULL(УчетнаяПолитикаПоПерсоналуОрганизаций.ПроставлятьАвтоматическиДатуОзнакомленияВКадровыхПриказах, ЛОЖЬ) КАК ПроставлятьАвтоматическиДатуОзнакомленияВКадровыхПриказах,
	|	ЕСТЬNULL(УчетнаяПолитикаПоПерсоналуОрганизаций.ПорядокСписанияФактическихОтпусков, ЗНАЧЕНИЕ(Перечисление.ПорядокСписанияФактическихОтпусков.РасчетнымиДокументами)) КАК ПорядокСписанияФактическихОтпусков,
	|	ЕСТЬNULL(УчетнаяПолитикаПоРасчетуЗарплатыОрганизаций.РасчетЗарплатыОрганизацииПоОтветственным, ЛОЖЬ) КАК РасчетЗарплатыОрганизацииПоОтветственным,
	|	ЕСТЬNULL(УчетнаяПолитикаПоРасчетуЗарплатыОрганизаций.УпрощенныйУчетНДФЛ, ЛОЖЬ) КАК УпрощенныйУчетНДФЛ,
	|	ЕСТЬNULL(УчетнаяПолитикаПоРасчетуЗарплатыОрганизаций.УчетЗадолженностиПоМесяцам, ИСТИНА) КАК УчетЗадолженностиПоМесяцам,
	|	ЕСТЬNULL(УчетнаяПолитикаПоРасчетуЗарплатыОрганизаций.ПроверкаПериодовНачисления, ЛОЖЬ) КАК ПроверкаПериодовНачисления,
	|	ЕСТЬNULL(УчетнаяПолитикаПоРасчетуЗарплатыОрганизаций.ИспользуютсяНачисленияВВалюте, ЛОЖЬ) КАК ИспользуютсяНачисленияВВалюте,
	|	ЕСТЬNULL(УчетнаяПолитикаПоРасчетуЗарплатыОрганизаций.УчитыватьНевыходыДляПлановогоАванса, ИСТИНА) КАК УчитыватьНевыходыДляПлановогоАванса,
	|	ЕСТЬNULL(УчетнаяПолитикаПоРасчетуЗарплатыОрганизаций.ДатаРасчетаПлановогоАванса, 15) КАК ДатаРасчетаПлановогоАванса,
	|	ЕСТЬNULL(УчетнаяПолитикаПоРасчетуЗарплатыОрганизаций.УпрощенныйУчетВзаиморасчетов, ИСТИНА) КАК УпрощенныйУчетВзаиморасчетов,
	|	ЕСТЬNULL(УчетнаяПолитикаПоРасчетуЗарплатыОрганизаций.НеУменьшатьПропорциональныеПремии, ЛОЖЬ) КАК НеУменьшатьПропорциональныеПремии,
	|	ВЫБОР
	|		КОГДА ЕСТЬNULL(УчетнаяПолитикаПоРасчетуЗарплатыОрганизацийИхПодразделений.ДатаПередачиФССВыплатыПособий, ДАТАВРЕМЯ(3000, 1, 1)) = ДАТАВРЕМЯ(1, 1, 1)
	|			ТОГДА ДАТАВРЕМЯ(3000, 1, 1)
	|		ИНАЧЕ ЕСТЬNULL(УчетнаяПолитикаПоРасчетуЗарплатыОрганизацийИхПодразделений.ДатаПередачиФССВыплатыПособий, ДАТАВРЕМЯ(3000, 1, 1))
	|	КОНЕЦ КАК ДатаПередачиФССВыплатыПособий
	|ИЗ
	|	Справочник.Организации КАК Организации
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.УчетнаяПолитикаПоПерсоналуОрганизаций КАК УчетнаяПолитикаПоПерсоналуОрганизаций
	|		ПО (ВЫБОР
	|				КОГДА Организации.ГоловнаяОрганизация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
	|					ТОГДА Организации.Ссылка
	|				ИНАЧЕ Организации.ГоловнаяОрганизация
	|			КОНЕЦ = УчетнаяПолитикаПоПерсоналуОрганизаций.Организация)
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.УчетнаяПолитикаПоРасчетуЗарплатыОрганизаций КАК УчетнаяПолитикаПоРасчетуЗарплатыОрганизаций
	|		ПО (ВЫБОР
	|				КОГДА Организации.ГоловнаяОрганизация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
	|					ТОГДА Организации.Ссылка
	|				ИНАЧЕ Организации.ГоловнаяОрганизация
	|			КОНЕЦ = УчетнаяПолитикаПоРасчетуЗарплатыОрганизаций.Организация)
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.УчетнаяПолитикаПоРасчетуЗарплатыОрганизацийИхПодразделений КАК УчетнаяПолитикаПоРасчетуЗарплатыОрганизацийИхПодразделений
	|		ПО Организации.Ссылка = УчетнаяПолитикаПоРасчетуЗарплатыОрганизацийИхПодразделений.Организация
	|ГДЕ
	|	(&НеОтбирать
	|			ИЛИ Организации.Ссылка = &Ссылка)";*/
			return null;
		}
		// ДанныеУчетнойПолитикиПоПерсоналуОрганизации()

		public object УчетнаяПолитикаПоПерсоналуОрганизацииПоУмолчанию(/**/)
		{
			/*СтрокаПолейУчетнойПолитики = "ЕдиныйНумераторКадровыхДокументов,
									|КонтрольКоличестваСтавокШтатногоРасписания,
									|КонтрольРазмераСтавокШтатногоРасписания,
									|РасчетЗарплатыОрганизацииПоОтветственным,
									|УпрощенныйУчетНДФЛ,
									|НеУменьшатьПропорциональныеПремии,
									|ИспользуютсяНачисленияВВалюте,
									|ПоказыватьТабельныеНомераВДокументах,
									|УчетЗадолженностиПоМесяцам,
									|ПроверкаПериодовНачисления,
									|ПроставлятьАвтоматическиДатуОзнакомленияВКадровыхПриказах,
									|УчитыватьНевыходыДляПлановогоАванса,
									|ДатаРасчетаПлановогоАванса,
									|ПорядокСписанияФактическихОтпусков,
									|ДатаПередачиФССВыплатыПособий,
									|ИспользуетсяТрудЧленовЭкипажейМорскихСудов,
									|ИспользуетсяТрудРаботающихВСтудотряде,
									|ИспользуетсяТрудФармацевтов,
									|ИспользуетсяТрудЧленовЛетныхЭкипажей,
									|ИспользуетсяТрудШахтеров,
									|УпрощенныйУчетВзаиморасчетов";*/
			/*// ЕдиныйНумераторКадровыхДокументов
*/
			/*// КонтрольКоличестваСтавокШтатногоРасписания
*/
			/*// КонтрольРазмераСтавокШтатногоРасписания
*/
			/*// РасчетЗарплатыОрганизацииПоОтветственным
*/
			/*// УпрощенныйУчетНДФЛ
*/
			/*// НеУменьшатьПропорциональныеПремии
*/
			/*// ИспользуютсяНачисленияВВалюте
*/
			/*// ПоказыватьТабельныеНомераВДокументах
*/
			/*// УчетЗадолженностиПоМесяцам
*/
			/*// ПроверкаПериодовНачисления
*/
			/*// ПроставлятьАвтоматическиДатуОзнакомленияВКадровыхПриказах
*/
			/*// УчитыватьНевыходыДляПлановогоАванса
*/
			/*// ДатаРасчетаПлановогоАванса
*/
			/*// ДатаПередачиФССВыплатыПособий
*/
			/*// ИспользуетсяТрудЧленовЭкипажейМорскихСудов
*/
			/*// ИспользуетсяТрудРаботающихВСтудотряде
*/
			/*// ИспользуетсяТрудФармацевтов
*/
			/*// ИспользуетсяТрудЧленовЛетныхЭкипажей
*/
			/*// ИспользуетсяТрудШахтеров
*/
			//Истина);
			/*// УпрощенныйУчетВзаиморасчетов
*/
			return null;
		}
		// УчетнаяПолитикаПоПерсоналуОрганизацииПоУмолчанию()
		// Процедура инициализирует глобальную переменную глУчетнаяПолитикаПоПерсоналуОрганизации.
		// Переменная содержит соответствие, где организация является ключом, а поддержка
		// поддержка внутреннего совместительства значением.
		//
		// Параметры:
		//  Нет.
		//

		public object ЗаполнениеУчетнойПолитикиПоПерсоналуОрганизации(/**/)
		{
			//УчетнаяПолитикаПоПерсоналуОрганизации = Новый Соответствие;
			if(true/*ПравоДоступа("Чтение", Метаданные.Справочники.Организации)*/)
			{
				//УчетнаяПолитикаПоПерсоналуОрганизации.Вставить(Справочники.Организации.ПустаяСсылка(), УчетнаяПолитикаПоПерсоналуОрганизацииПоУмолчанию());
				//Выборка = ДанныеУчетнойПолитикиПоПерсоналуОрганизации().Выбрать();
				while(true/*Выборка.Следующий()*/)
				{
					//Политика = УчетнаяПолитикаПоПерсоналуОрганизацииПоУмолчанию();
					//ЗаполнитьЗначенияСвойств(Политика, Выборка);
					//УчетнаяПолитикаПоПерсоналуОрганизации.Вставить(Выборка.Организация, Политика);
				}
				//;;
			}
			return null;
		}
		// ЗаполнениеУчетнойПолитикиПоПерсоналуОрганизации
		// Функция выполняет пропорциональное распределение суммы в соответствии
		// с заданными коэффициентами распределения
		//
		// Параметры:
		//		ИсхСумма - распределяемая сумма
		//		МассивКоэф - массив коэффициентов распределения
		//		Точность - точность округления при распределении. Необязателен.
		//
		//	Возврат:
		//		МассивСумм - массив размерностью равный массиву коэффициентов, содержит
		//			суммы в соответствии с весом коэффициента (из массива коэффициентов)
		//          В случае если распределить не удалось (сумма = 0, кол-во коэф. = 0,
		//          или суммарный вес коэф. = 0), тогда возвращается значение Неопределено
		//

		public object РаспределитьПропорционально(/*Знач ИсхСумма, МассивКоэф, Знач Точность = 2*/)
		{
			if(true/*МассивКоэф.Количество() = 0 Или ИсхСумма = 0 Или ИсхСумма = Null*/)
			{
			}
			//ИндексМакс = 0;
			//МаксЗнач   = 0;
			//РаспрСумма = 0;
			//СуммаКоэф  = 0;
			if(true/*СуммаКоэф = 0*/)
			{
			}
			//МассивСумм = Новый Массив(МассивКоэф.Количество());
			/*// Погрешности округления отнесем на коэффициент с максимальным весом
*/
			if(true/*Не РаспрСумма = ИсхСумма*/)
			{
				//МассивСумм[ИндексМакс] = МассивСумм[ИндексМакс] + ИсхСумма - РаспрСумма;
			}
			return null;
		}
		// РаспределитьПропорционально()
		////////////////////////////////////////////////////////////////////////////////
		// КОММЕНТАРИИ РАСЧЕТОВ

		public object КомментарийРасчета(/*	ТекстСообщения, 
							РодительскаяСтрока = НеОпределено,
							ПредставлениеРасшифровкиКомментария = НеОпределено, 
							РасшифровкаКомментария = НеОпределено, 
							ВидСообщения = НеОпределено,
							РаскрытьКомментарий = Истина*/)
		{
			//Обработка = глЗначениеПеременной("глОбработкаСообщений");
			if(true/*ВидСообщения = НеОпределено*/)
			{
				//ВидСообщения = Перечисления.ВидыСообщений.Информация;
			}
			if(true/*РасшифровкаКомментария <> НеОпределено*/)
			{
				//Расшифровки = Новый Массив;
				/*// расшифровка сообщений представляет собой массив структур "Представление+Расшифровка"
*/
				//Расшифровки.Добавить(Новый Структура("Представление,Расшифровка", ПредставлениеРасшифровкиКомментария, РасшифровкаКомментария));
			}
			//Сообщить(ТекстСообщения);
			return null;
		}

		public void ОшибкаРасчета(/*ТекстОшибки*/)
		{
			//Обработка = глЗначениеПеременной("глОбработкаСообщений");
			//Обработка.ДобавитьСообщение(ТекстОшибки, Перечисления.ВидыСообщений.Ошибка);
			//Сообщить(ТекстОшибки, СтатусСообщения.Важное);
		}
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ И ФУНКЦИИ РАБОТЫ С МАССИВАМИ
		// Сравнивает два массива однотипных значений (кроме коллекций значений)
		//
		// Параметры:
		//  ПервыйМассив,ВторойМассив - сравниваемые массивы
		//
		// Возвращаемое значение:
		//  булево.
		//

		public object МассивыИдентичны(/*ПервыйМассив,ВторойМассив*/)
		{
			//ЭлементовМассива = ПервыйМассив.Количество();
			//МассивыСовпадают = (ЭлементовМассива = ВторойМассив.Количество());
			if(true/*МассивыСовпадают*/)
			{
			}
			return null;
		}
		// МассивыИдентичны()
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ И ФУНКЦИИ РАБОТЫ С ТАБЛИЦАМИ
		//Проверяет идентичность значений двух таблиц одинаковой структуры

		public object ТаблицыИдентичны(/*Таблица1, Таблица2*/)
		{
			if(true/*Таблица1.Колонки.Количество() <> Таблица2.Колонки.Количество()*/)
			{
			}
			return null;
		}
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ И ФУНКЦИИ РАБОТЫ С ТИПАМИ
		// Служебная функция - возвращает принадлежность объекта метаданных определенному классу
		//
		// Параметры:
		//	Класс  - класс
		//	Объект - объект метаданных
		//

		public object ПринадлежностьКлассуМетаданных(/*Класс, Объект*/)
		{
			return null;
		}
		// ПринадлежностьКлассуМетаданных()
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ И ФУНКЦИИ ПРОВЕРКИ НАЛИЧИЯ И ЗАПОЛНЕНИЯ РЕВИЗИТОВ
		// Определяет существуют ли в конфигурации документы, вводимые на основании указанного
		//
		// Параметры
		//   МетаданныеДокумента - <Объект описания метаданного>, метаданные документа,
		//                        на основании которого могут вводиться другие документы
		//
		// Возвращаемое значение:
		//   булево
		//

		public object СуществуютДокументыВводимыеНаОсновании(/*МетаданныеДокумента*/)
		{
			return null;
		}

		public object ШестнадцатиричноеВДесятичное(/*Источник*/)
		{
			//Результат = 0;
			//ШеснадцатиричныеСимволы = "0123456789ABCDEF";
			//ДлинаСтроки = СтрДлина(Источник);
			return null;
		}
		// Вычисляет объект для оповещения
		//
		// Параметры
		//  ФизЛицо - ФизЛицо, данные которого редактируются
		//  ФормаВладелец - вызвавшая форма
		//
		// Возвращаемое значение:
		//   СправочникСсылка.ФизическиеЛица, Форма - ФизЛицо, данные которого редактируются
		//                                            или вызвавшая форма
		//

		public object ОпределитьОповещаемоеФизЛицо(/*ФизЛицо, ФормаВладелец*/)
		{
			/*// физлицо может быть уже указано в редактируемой записи регистра
*/
			if(true/*Не ФизЛицо.Пустая()*/)
			{
			}
			/*// выясним, какой объект редактируется вызвавшей формой
*/
			//Объект = Неопределено;
			//ФизЛицоКОповещению = Справочники.ФизическиеЛица.ПустаяСсылка();
			//ТипОбъекта = ТипЗнч(Объект);
			if(true/*ТипОбъекта = Тип("СправочникОбъект.ФизическиеЛица")*/)
			{
				//ФизЛицоКОповещению = Объект.Ссылка;
			}
			if(true/*Не ФизЛицоКОповещению.Пустая()*/)
			{
			}
			/*// редактируемое физлицо не записано, будем оповещать только вызвавшую форму 
*/
			return null;
		}
		// ОпределитьОповещаемыйОбъект()
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ И ФУНКЦИИ РАБОТЫ с квази-предопределенными элементами

		public void ПередЗаписьюОсобогоЭлементаПроверкаВозможностиЗаписи(/*Источник, Отказ*/)
		{
			if(true/*Отказ Или Источник.ОбменДанными.Загрузка*/)
			{
			}
			//ПолноеИмя = Источник.Метаданные().ПолноеИмя();
			//НовоеЗначение = Источник.ИдентификаторЭлемента;
			if(true/*Источник.ЭтоНовый()*/)
			{
				//Запрос = Новый Запрос;
				//Запрос.УстановитьПараметр("Значение", НовоеЗначение);
				/*Запрос.Текст = 
		"ВЫБРАТЬ 
		|	Ссылка КАК Ссылка
		|ИЗ " + ПолноеИмя + "
		|ГДЕ ИдентификаторЭлемента = &Значение";*/
				if(true/*Не Запрос.Выполнить().Пустой()*/)
				{
					/*// очистим реквизит
*/
					//Источник.ИдентификаторЭлемента = "";
				}
			}
		}

		public void ПередУдалениемОсобогоЭлементаПроверкаВозможностиВыполнения(/*Источник, Отказ*/)
		{
			if(true/*Отказ*/)
			{
			}
			if(true/*ЗначениеЗаполнено(Источник.ИдентификаторЭлемента)*/)
			{
				//ВызватьИсключение("Удалять элемент """ + ОбщегоНазначения.ПолучитьПредставленияОбъектов(Источник.Ссылка) + """ запрещено!");
			}
		}

		public object ОсобыйЭлемент(/*Менеджер, ИмяЭлемента*/)
		{
			return null;
		}
		// ОсобыйЭлемент()

		public object ОсобыеЭлементы(/*Менеджер, МассивИменЭлементов*/)
		{
			//Запрос = Новый Запрос;
			/*Запрос.Текст =
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	Ссылка
	|ИЗ
	|	" + Менеджер.ПустаяСсылка().Метаданные().ПолноеИмя() + " КАК Таблица
	|ГДЕ
	|	Таблица.ИдентификаторЭлемента В (&МассивИменЭлементов)";*/
			//Запрос.УстановитьПараметр("МассивИменЭлементов", МассивИменЭлементов);
			return null;
		}
		// ОсобыеЭлементы()

		public object ЭтоОсобыйЭлемент(/*Ссылка*/)
		{
			return null;
		}
		// ОсобыйЭлемент()
	}
}
